home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 52
/
Amiga Format AFCD52 (Issue 136, May 2000).iso
/
-in_the_mag-
/
pdselect
/
ispell_yam
/
rexx
/
ispell_mr.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
2000-03-08
|
7KB
|
217 lines
/*-------------------------------------------------------------------------------------------------
iSpell_mr.rexx 0.4
Brecht Machiels 1999
---------------------------------------------------------------------------------------------------
$VER: iSpell_mr v0.4
$AUTHOR: Copyright © 1999 Brecht Machiels
$DESCRIPTION: MUIRexx spelling checker for YAM 2.0
--> OPTIONS <------------------------------------------------------------------------------------*/
BINPATH = "iSpell:bin/"
SCREEN = "Workbench"
/*> DO NOT TOUCH <-------------------------------------------------------------------------------*/
ShowMe = 0x80429ba8 /* V4 isg BOOL */
Window_PublicScreen = 0x804278e4 /* V6 isg STRPTR */
Group_Rows = 0x8042b68f /* V4 is. LONG */
Group_Spacing = 0x8042866d /* V4 is. LONG */
MUIV_List_Insert_Bottom = -3
/*-----------------------------------------------------------------------------------------------*/
OPTIONS RESULTS
PARSE ARG cmd opt
ADDRESS ISPELLMR
SELECT
WHEN cmd = 'INIT' THEN DO
a = OPEN('envvar', 'ENV:ISPELLYAM', 'R')
IF a = 0 THEN DO
ADDRESS 'AREXX' 'YAM:Rexx/iSpell_lang'
DO UNTIL a = 1
a = OPEN('envvar', 'ENV:ISPELLYAM', 'R')
END
END
language = READLN('envvar')
CLOSE('envvar')
IF SHOW('P', 'IRexxSpell') THEN DO
a = OPEN('currentlang', 'ENV:ISPELLMR', 'R')
IF a = 0 THEN DO
ADDRESS 'AREXX' 'YAM:Rexx/iSpell_mr CLEANEXIT'
EXIT
END
IF language ~= READLN('currentlang') THEN DO
ADDRESS 'IRexxSpell' 'EXIT'
PRAGMA('S', 10240)
ADDRESS 'COMMAND' 'run <nil: >nil: 'BINPATH'iSpell -d'language' -r >nil: <nil:'
ADDRESS 'COMMAND' 'waitforport IRexxSpell'
END
CLOSE('currentlang')
END
ELSE DO
PRAGMA('S', 10240)
ADDRESS 'COMMAND' 'run <nil: >nil: 'BINPATH'iSpell -d'language' -r >nil: <nil:'
ADDRESS 'COMMAND' 'waitforport IRexxSpell'
ADDRESS 'COMMAND' 'setenv ISPELLMR 'language
END
CALL Start
END
WHEN cmd = 'NEXT' THEN DO
Address 'YAM' 'WRITEEDITOR "'NEXT word'"'
CALL Checking
END
WHEN cmd = 'ADD' THEN DO
string ID CWORD
ADDRESS 'IRexxSpell' 'ADD 'TRANSLATE(result, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')''
Address 'YAM' 'WRITEEDITOR "'NEXT word'"'
CALL Checking
END
WHEN cmd = 'ACCEPT' THEN DO
string ID CWORD
ADDRESS 'IRexxSpell' 'ACCEPT 'TRANSLATE(result, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')''
Address 'YAM' 'WRITEEDITOR "'NEXT word'"'
CALL Checking
END
WHEN cmd = 'REPLACE' THEN DO
newword = STRIP(opt)
string ID CWORD
length = LENGTH(result)
ADDRESS 'YAM' 'WRITEEDITOR "'MARK on'"'
DO count = 1 TO length
ADDRESS 'YAM' 'WRITEEDITOR "'CURSOR right'"'
END
ADDRESS 'YAM' 'WRITEEDITOR "'ERASE'"'
ADDRESS 'YAM' 'WRITEEDITOR "'TEXT newword'"'
Address 'YAM' 'WRITEEDITOR "'NEXT word'"'
CALL Checking
END
WHEN cmd = 'RESTART' then do
CALL Start
END
WHEN cmd = 'STOP' then do
QUIT
EXIT
END
WHEN cmd = 'CLEANEXIT' then do
Address 'IRexxSpell' 'EXIT'
QUIT
EXIT
END
OTHERWISE
window ID MAIN COMMAND '"QUIT"' PORT ISPELLMR TITLE '"iSpell"' ATTRS Window_PublicScreen SCREEN
group
string ID LSTN ATTRS ShowMe 0 CONTENT '1'
text ID CLINE
endgroup
group HORIZ
group
string ID CWORD COMMAND '"YAM:Rexx/iSpell_mr REPLACE %s"'
text ID TWORD LABEL '\n\n\033cLoading dictionary\n\n'
group HORIZ ATTRS Group_Rows 2 Group_Spacing 0
button ID NEXT COMMAND '"YAM:Rexx/iSpell_mr NEXT"' HELP '"Ignore this word & continue checking"' LABEL 'Next'
button ID ACCPT COMMAND '"YAM:Rexx/iSpell_mr ACCEPT"' HELP '"Accept this word for this session"' LABEL 'Accept'
button ID ADD COMMAND '"YAM:Rexx/iSpell_mr ADD"' HELP '"Add this word to the private dictionary"' LABEL 'Add'
button ID RSTRT COMMAND '"YAM:Rexx/iSpell_mr RESTART"' HELP '"Restart at the beginning of the document"' LABEL 'Restart'
button ID STOP COMMAND '"YAM:Rexx/iSpell_mr STOP"' HELP '"Stop checking of the document"' LABEL 'Stop'
button ID EXIT COMMAND '"YAM:Rexx/iSpell_mr CLEANEXIT"' HELP '"Stop checking & exit iSpell"' LABEL 'Exit'
endgroup
endgroup
list ID SLST COMMAND '"YAM:Rexx/iSpell_mr REPLACE %s"'
endgroup
endwindow
ADDRESS 'AREXX' 'YAM:Rexx/iSpell_mr INIT'
END
EXIT
Start:
Address 'YAM' 'WRITEEDITOR "'POSITION sof'"'
check = 'vzvzvz'
CALL Checking
exit
Checking:
prev = check
ADDRESS 'YAM' 'WRITEEDITOR "'GETCURSOR column'"'
wordpos = result + 1
ADDRESS 'YAM' 'WRITEEDITOR GETLINE'
line = result
text ID CLINE LABEL line
IF POS(' ', SUBSTR(line, wordpos)) ~= 0 THEN
check = SUBSTR(line, wordpos, POS(' ', SUBSTR(line, wordpos)))
ELSE check = STRIP(SUBSTR(line, wordpos), 'T', '0a'X)
check = STRIP(STRIP(check), 'B', '.,;:"''[]{}()<>?!')
IF check = '' THEN CALL Finished
string ID CWORD CONTENT check
SELECT
WHEN RIGHT(prev, LENGTH(prev) - POS(' ', TRANSLATE(prev, ' ', '.,;:/_&|@"#''§^ç<>{}°©1234567890[]®', ' '))) = check THEN DO
ADDRESS 'YAM' 'WRITEEDITOR "'NEXT word'"'
CALL Checking
END
WHEN VERIFY(check, '.,;:/_&|@"#''§^ç<>{}°©1234567890[]()®', 'M') ~= 0 THEN DO
ADDRESS 'YAM' 'WRITEEDITOR "'NEXT word'"'
CALL Checking
END
OTHERWISE DO
IF VERIFY(SUBSTR(check, 2), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'M') = 0 THEN
ADDRESS 'IRexxSpell' 'QUICKCHECK 'check''
ELSE ADDRESS 'IRexxSpell' 'QUICKCHECK 'TRANSLATE(check, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')''
IF result = 'bad' THEN DO
text ID TWORD LABEL '\n\033c"\033b'check'\033n" is spelled incorrectly\n\n\033cSelect an option'
ADDRESS 'IRexxSpell' 'CHECK 'check''
r = result
r1 = substr(r,1,1)
SELECT
WHEN r1 = '#' THEN suggest = "No_Suggestions"
WHEN r1 = '&' THEN suggest = space(compress(r,'&1234567890:'))
OTHERWISE suggest = check
END
string ID LSTN
DO index = 0 TO result
list ID SLST REMOVE POS 0
END
suglist = TRANSLATE(suggest, ' ', ',')
string ID LSTN CONTENT words(suglist)
index = 0
DO index = index + 1 WHILE index ~= words(suglist) + 1
list ID SLST INSERT POS MUIV_List_Insert_Bottom STRING subword(suglist,index,1)
END
EXIT
END
ELSE DO
Address 'YAM' 'WRITEEDITOR "'NEXT word'"'
CALL Checking
END
END
END
EXIT
Finished:
text ID TWORD LABEL '\n\n\033cEnd of document reached\n\n'
EXIT